map-files
Return an object for a glob of files. Pass a rename
function for the keys, or a parse
function for the content, allowing it to be used for readable or require-able files.
Install
Install with npm:
$ npm install map-files --save
Heads up!
Breaking changes in v0.8.0. See the history for details.
Usage
var mapFiles = require('map-files');
console.log(mapFiles('templates/*.txt'));
Returns an object of vinyl files that looks something like this:
{ 'test/fixtures/a.txt': <File "test/fixtures/a.txt" <Buffer 41 41 41>>,
'test/fixtures/b.txt': <File "test/fixtures/b.txt" <Buffer 42 42 42>>,
'test/fixtures/c.txt': <File "test/fixtures/c.txt" <Buffer 43 43 43>> }
Options
options.cwd
Specify the current working directory
Params
Type: String
Default: process.cwd()
Example
files('*.txt', {cwd: 'templates'});
options.renameKey
Rename the key of each file object:
Params
Type: Function
Default: file.relative
Example
var files = mapFiles('templates/*.txt', {
renameKey: function (file) {
return file.basename;
}
});
Returns something like:
{ 'a.txt': <File "test/fixtures/a.txt" <Buffer 41 41 41>>,
'b.txt': <File "test/fixtures/b.txt" <Buffer 42 42 42>>,
'c.txt': <File "test/fixtures/c.txt" <Buffer 43 43 43>> }
options.decorate
Pass an object of methods to decorate as getters onto each file in the results.
var yaml = require('js-yaml');
var files = mapFiles('test/fixtures/*.yml', {
renameKey: 'stem',
decorate: {
yaml: function(file) {
return yaml.safeLoad(file.contents.toString());
}
}
});
console.log(files.a.yaml);
History
v0.8.0
options.name
was removed, use options.renameKey
instead.options.cache
was removedoptions.read
was removedoptions.decorate
was added. See the decorate docs.
v0.5.0
As of v0.5.0, map-files returns absolute file paths by default. You can achieve the same results by using a custom name
function as in the examples.
Related projects
You might also be interested in these projects:
- export-files: node.js utility for exporting a directory of files as modules. | homepage
- file-reader: Read a glob of files, dynamically choosing the reader or requiring the files based on… more | homepage
- filter-files: Recursively read directories and return a list of files, filtered to have only the files… more | homepage
- micromatch: Glob matching for javascript/node.js. A drop-in replacement and faster alternative to minimatch and multimatch. | homepage
Contributing
Pull requests and stars are always welcome. For bugs and feature requests, please create an issue.
Building docs
Generate readme and API documentation with verb:
$ npm install verb && npm run docs
Or, if verb is installed globally:
$ verb
Running tests
Install dev dependencies:
$ npm install -d && npm test
Author
Jon Schlinkert
License
Copyright © 2016, Jon Schlinkert.
Released under the MIT license.
This file was generated by verb, v0.9.0, on April 23, 2016.